package bootstrap

import (
	g "com.codingq92/go-chat/global"
	"github.com/fsnotify/fsnotify"
	"github.com/spf13/viper"
	"log"
	"os"
)

func InitConfig() *viper.Viper {
	//默认配置文件的路径
	config := "config.yaml"
	//获取环境变量中的设置来获取配置文件路径
	if configEnv := os.Getenv("VIPER_CONFIG"); "" != configEnv {
		config = configEnv
	}
	v := viper.New()
	v.SetConfigFile(config)
	v.SetConfigType("yaml")
	if err := v.ReadInConfig(); nil != err {
		log.Fatalf("Fatal error config file: %s \n", err)
	}
	//监听配置文件
	v.WatchConfig()
	v.OnConfigChange(func(fChange fsnotify.Event) {
		log.Printf("Config file changed: %s", fChange.Name)
		//重新加载配置文件
		if err := v.Unmarshal(&g.Config); nil != err {
			log.Printf("Config file reloaded: %s\n", err)
		}
	})
	//读取配置文件
	if err := v.Unmarshal(&g.Config); nil != err {
		log.Printf("Config file reloaded: %s\n", err)
	}
	return v
}
